package org.atlantis.grosbeak.pot.dialect;

/**
 * 数据库方言接口。每种数据库对于分页都有不同的处理方法，那么就需要实现此接口。
 * 
 * @author <a href="mailto:seenoevil.cn@gmail.com">SeeNoEvil</a>
 * 
 */
public interface Dialect {

	/**
	 * 本地化SQL语句。根据有无fistIndex、maxIndex参数时格式化成不同的符合当前数据库的SQL语句。
	 * 
	 * @param sql
	 *            原始SQL语句。
	 * @param hasFirst
	 *            有无firstIndex参数。
	 * @param hasMax
	 *            有无 maxIndex参数。
	 * @return 符合当前数据库的标准的SQL语句。
	 */
	String localizeLimitSQL(String sql, boolean hasFirst, boolean hasMax);

	/**
	 * 是否首先绑定limit参数。
	 * 
	 * @return
	 */
	boolean bindLimitParametersFirst();

	/**
	 * 是否倒置maxIndex和firstIndex两个参数。
	 * 
	 * @return
	 */
	boolean bindLimitParametersInReverseOrder();
}
